﻿using System;
using System.Collections.Generic;
using System.Text;
using System.Windows.Forms;
using AndersLiu.Reflector.Properties;
using System.Drawing;

namespace AndersLiu.Reflector.Program.UI.AssemblyTreeNode
{
    class NodeImages
    {
        public static ImageList CreateImageList()
        {
            var imgList = new ImageList()
            {
                ColorDepth = ColorDepth.Depth24Bit,
                ImageSize = new Size(16, 16),
                TransparentColor = Color.Magenta,
            };

            imgList.Images.Add(Keys.AssemblyImage, Resources.AssemblyImage);
            imgList.Images.Add(Keys.AssemblyImage, Resources.AssemblyImage);
            imgList.Images.Add(Keys.ClassImage, Resources.ClassImage);
            imgList.Images.Add(Keys.ClassInternalImage, Resources.ClassInternalImage);
            imgList.Images.Add(Keys.ClassPrivateImage, Resources.ClassPrivateImage);
            imgList.Images.Add(Keys.ClassProtectedImage, Resources.ClassProtectedImage);
            imgList.Images.Add(Keys.ConstantImage, Resources.ConstantImage);
            imgList.Images.Add(Keys.ConstantInternalImage, Resources.ConstantInternalImage);
            imgList.Images.Add(Keys.ConstantPrivateImage, Resources.ConstantPrivateImage);
            imgList.Images.Add(Keys.ConstantProtectedImage, Resources.ConstantProtectedImage);
            imgList.Images.Add(Keys.DelegateImage, Resources.DelegateImage);
            imgList.Images.Add(Keys.DelegateInternalImage, Resources.DelegateInternalImage);
            imgList.Images.Add(Keys.DelegatePrivateImage, Resources.DelegatePrivateImage);
            imgList.Images.Add(Keys.DelegateProtectedImage, Resources.DelegateProtectedImage);
            imgList.Images.Add(Keys.EnumImage, Resources.EnumImage);
            imgList.Images.Add(Keys.EnumInternalImage, Resources.EnumInternalImage);
            imgList.Images.Add(Keys.EnumItemImage, Resources.EnumItemImage);
            imgList.Images.Add(Keys.EnumPrivateImage, Resources.EnumPrivateImage);
            imgList.Images.Add(Keys.EnumProtectedImage, Resources.EnumProtectedImage);
            imgList.Images.Add(Keys.ErrorImage, Resources.ErrorImage);
            imgList.Images.Add(Keys.EventImage, Resources.EventImage);
            imgList.Images.Add(Keys.EventInternalImage, Resources.EventInternalImage);
            imgList.Images.Add(Keys.EventPrivateImage, Resources.EventPrivateImage);
            imgList.Images.Add(Keys.EventProtectedImage, Resources.EventProtectedImage);
            imgList.Images.Add(Keys.FieldImage, Resources.FieldImage);
            imgList.Images.Add(Keys.FieldInternalImage, Resources.FieldInternalImage);
            imgList.Images.Add(Keys.FieldPrivateImage, Resources.FieldPrivateImage);
            imgList.Images.Add(Keys.FieldProtectedImage, Resources.FieldProtectedImage);
            imgList.Images.Add(Keys.FolderImage, Resources.FolderImage);
            imgList.Images.Add(Keys.GrayFolderImage, Resources.GrayFolderImage);
            imgList.Images.Add(Keys.InterfaceImage, Resources.InterfaceImage);
            imgList.Images.Add(Keys.InterfaceInternalImage, Resources.InterfaceInternalImage);
            imgList.Images.Add(Keys.InterfacePrivateImage, Resources.InterfacePrivateImage);
            imgList.Images.Add(Keys.InterfaceProtectedImage, Resources.InterfaceProtectedImage);
            imgList.Images.Add(Keys.MethodImage, Resources.MethodImage);
            imgList.Images.Add(Keys.MethodInternalImage, Resources.MethodInternalImage);
            imgList.Images.Add(Keys.MethodPrivateImage, Resources.MethodPrivateImage);
            imgList.Images.Add(Keys.MethodProtectedImage, Resources.MethodProtectedImage);
            imgList.Images.Add(Keys.ModuleImage, Resources.ModuleImage);
            imgList.Images.Add(Keys.NamespaceImage, Resources.NamespaceImage);
            imgList.Images.Add(Keys.PropertyImage, Resources.PropertyImage);
            imgList.Images.Add(Keys.PropertyInternalImage, Resources.PropertyInternalImage);
            imgList.Images.Add(Keys.PropertyPrivateImage, Resources.PropertyPrivateImage);
            imgList.Images.Add(Keys.PropertyProtectedImage, Resources.PropertyProtectedImage);
            imgList.Images.Add(Keys.StructureImage, Resources.StructureImage);
            imgList.Images.Add(Keys.StructureInternalImage, Resources.StructureInternalImage);
            imgList.Images.Add(Keys.StructurePrivateImage, Resources.StructurePrivateImage);
            imgList.Images.Add(Keys.StructureProtectedImage, Resources.StructureProtectedImage);

            return imgList;
        }

        public class Keys
        {
            public const string AssemblyImage = "AssemblyImage";
            public const string ClassImage = "ClassImage";
            public const string ClassInternalImage = "ClassInternalImage";
            public const string ClassPrivateImage = "ClassPrivateImage";
            public const string ClassProtectedImage = "ClassProtectedImage";
            public const string ConstantImage = "ConstantImage";
            public const string ConstantInternalImage = "ConstantInternalImage";
            public const string ConstantPrivateImage = "ConstantPrivateImage";
            public const string ConstantProtectedImage = "ConstantProtectedImage";
            public const string DelegateImage = "DelegateImage";
            public const string DelegateInternalImage = "DelegateInternalImage";
            public const string DelegatePrivateImage = "DelegatePrivateImage";
            public const string DelegateProtectedImage = "DelegateProtectedImage";
            public const string EnumImage = "EnumImage";
            public const string EnumInternalImage = "EnumInternalImage";
            public const string EnumItemImage = "EnumItemImage";
            public const string EnumPrivateImage = "EnumPrivateImage";
            public const string EnumProtectedImage = "EnumProtectedImage";
            public const string ErrorImage = "ErrorImage";
            public const string EventImage = "EventImage";
            public const string EventInternalImage = "EventInternalImage";
            public const string EventPrivateImage = "EventPrivateImage";
            public const string EventProtectedImage = "EventProtectedImage";
            public const string FieldImage = "FieldImage";
            public const string FieldInternalImage = "FieldInternalImage";
            public const string FieldPrivateImage = "FieldPrivateImage";
            public const string FieldProtectedImage = "FieldProtectedImage";
            public const string FolderImage = "FolderImage";
            public const string GrayFolderImage = "GrayFolderImage";
            public const string InterfaceImage = "InterfaceImage";
            public const string InterfaceInternalImage = "InterfaceInternalImage";
            public const string InterfacePrivateImage = "InterfacePrivateImage";
            public const string InterfaceProtectedImage = "InterfaceProtectedImage";
            public const string MethodImage = "MethodImage";
            public const string MethodInternalImage = "MethodInternalImage";
            public const string MethodPrivateImage = "MethodPrivateImage";
            public const string MethodProtectedImage = "MethodProtectedImage";
            public const string ModuleImage = "ModuleImage";
            public const string NamespaceImage = "NamespaceImage";
            public const string PropertyImage = "PropertyImage";
            public const string PropertyInternalImage = "PropertyInternalImage";
            public const string PropertyPrivateImage = "PropertyPrivateImage";
            public const string PropertyProtectedImage = "PropertyProtectedImage";
            public const string StructureImage = "StructureImage";
            public const string StructureInternalImage = "StructureInternalImage";
            public const string StructurePrivateImage = "StructurePrivateImage";
            public const string StructureProtectedImage = "StructureProtectedImage";
        }
    }
}
